 /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Compras.java
 *
 * Created on 18/08/2010, 07:53:26
 */
package view;

import DAO.CompraDAO;
import DAO.FornecedorDAO;
import DAO.ProdutoDAO;
import controller.Compra;
import controller.Fornecedor;
import controller.Produto;
import java.awt.Dimension;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Alcivando
 */
public class Compras extends javax.swing.JInternalFrame {

    /** Creates new form Compras */
    CompraDAO dao;
    Compra compra;
    DefaultTableModel modeloPesquisaFornecedor;
    DefaultTableModel modeloPesquisaProduto;
    DefaultTableModel modeloProdutoSelecionado;
    double valorCompra;
    ArrayList<Produto> listaProduto;
    private static final Compras cadCompra;

    static {
        cadCompra = new Compras();
    }

    public static Compras getInstancia() {
        return cadCompra;
    }

    public Compras() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel5 = new javax.swing.JPanel();
        btnNovo = new javax.swing.JButton();
        btnSalvar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();
        jPanel3 = new javax.swing.JPanel();
        boxTipoPagamento = new javax.swing.JComboBox();
        jLabel11 = new javax.swing.JLabel();
        txtData = new javax.swing.JTextField();
        jLabel12 = new javax.swing.JLabel();
        jPanel1 = new javax.swing.JPanel();
        jPanel7 = new javax.swing.JPanel();
        jScrollPane5 = new javax.swing.JScrollPane();
        tabProdutoSelecionados = new javax.swing.JTable();
        jPanel6 = new javax.swing.JPanel();
        txtPesquisaProduto = new javax.swing.JTextField();
        jScrollPane4 = new javax.swing.JScrollPane();
        tabPesquisaProduto = new javax.swing.JTable();
        jLabel3 = new javax.swing.JLabel();
        btnAddProduto = new javax.swing.JButton();
        txtQtd = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        rotValor = new javax.swing.JPanel();
        lValorTotal = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        rotParcela = new javax.swing.JPanel();
        lValorTotal1 = new javax.swing.JLabel();
        nParcelas = new javax.swing.JComboBox();
        jLabel13 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        rotValorParcela = new javax.swing.JTextPane();

        setClosable(true);
        setIconifiable(true);
        setTitle("Controle de Compras");

        jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder()));

        btnNovo.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        btnNovo.setText("Novo ");
        btnNovo.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnNovo.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnNovo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNovoActionPerformed(evt);
            }
        });

        btnSalvar.setFont(new java.awt.Font("Tahoma", 1, 12));
        btnSalvar.setText("Salvar");
        btnSalvar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnSalvar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnSalvar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSalvarActionPerformed(evt);
            }
        });

        btnCancelar.setFont(new java.awt.Font("Tahoma", 1, 12));
        btnCancelar.setText("Cancelar");
        btnCancelar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnCancelar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addComponent(btnNovo, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnSalvar, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, 98, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel5Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {btnCancelar, btnNovo, btnSalvar});

        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(btnCancelar, javax.swing.GroupLayout.DEFAULT_SIZE, 83, Short.MAX_VALUE)
            .addComponent(btnSalvar, javax.swing.GroupLayout.DEFAULT_SIZE, 83, Short.MAX_VALUE)
            .addComponent(btnNovo, javax.swing.GroupLayout.DEFAULT_SIZE, 83, Short.MAX_VALUE)
        );

        jPanel5Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {btnCancelar, btnNovo, btnSalvar});

        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Dados Compra", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N

        boxTipoPagamento.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Á vista", "Á vista no cartão", "Á prazo", "Á prazo no cartão" }));
        boxTipoPagamento.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                boxTipoPagamentoActionPerformed(evt);
            }
        });

        jLabel11.setFont(new java.awt.Font("Tahoma", 0, 12));
        jLabel11.setText("Tipo de Pagamento");

        txtData.setEnabled(false);

        jLabel12.setFont(new java.awt.Font("Tahoma", 0, 12));
        jLabel12.setText("Data");

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(boxTipoPagamento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel11))
                .addGap(27, 27, 27)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel12)
                    .addComponent(txtData, javax.swing.GroupLayout.PREFERRED_SIZE, 72, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(96, Short.MAX_VALUE))
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel11)
                    .addComponent(jLabel12))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(boxTipoPagamento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txtData, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Dados do Produto", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N

        jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Produtos Selecionados", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 10))); // NOI18N

        tabProdutoSelecionados.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        tabProdutoSelecionados.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tabProdutoSelecionadosMouseClicked(evt);
            }
        });
        jScrollPane5.setViewportView(tabProdutoSelecionados);

        javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
        jPanel7.setLayout(jPanel7Layout);
        jPanel7Layout.setHorizontalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel7Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 323, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel7Layout.setVerticalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel7Layout.createSequentialGroup()
                .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Pesquisar Produtos", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 10))); // NOI18N

        txtPesquisaProduto.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                txtPesquisaProdutoKeyReleased(evt);
            }
        });

        tabPesquisaProduto.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        tabPesquisaProduto.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tabPesquisaProdutoMouseClicked(evt);
            }
        });
        jScrollPane4.setViewportView(tabPesquisaProduto);

        jLabel3.setText("Pesquisar:");

        btnAddProduto.setText("adicionar produto");
        btnAddProduto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAddProdutoActionPerformed(evt);
            }
        });

        txtQtd.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                txtQtdKeyReleased(evt);
            }
        });

        jLabel1.setText("Quantidade: ");

        javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
        jPanel6.setLayout(jPanel6Layout);
        jPanel6Layout.setHorizontalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel6Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel6Layout.createSequentialGroup()
                        .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel6Layout.createSequentialGroup()
                                .addComponent(jLabel1)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txtQtd, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(btnAddProduto, javax.swing.GroupLayout.PREFERRED_SIZE, 143, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel6Layout.createSequentialGroup()
                                .addComponent(jLabel3)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txtPesquisaProduto, javax.swing.GroupLayout.DEFAULT_SIZE, 254, Short.MAX_VALUE)))
                        .addGap(50, 50, 50))
                    .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 327, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );
        jPanel6Layout.setVerticalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel6Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(txtPesquisaProduto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 10, Short.MAX_VALUE)
                .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtQtd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1)
                    .addComponent(btnAddProduto, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, 355, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        rotValor.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Valor da Compra", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N

        lValorTotal.setFont(new java.awt.Font("Tahoma", 1, 18));

        javax.swing.GroupLayout rotValorLayout = new javax.swing.GroupLayout(rotValor);
        rotValor.setLayout(rotValorLayout);
        rotValorLayout.setHorizontalGroup(
            rotValorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(rotValorLayout.createSequentialGroup()
                .addGap(147, 147, 147)
                .addComponent(lValorTotal)
                .addContainerGap(169, Short.MAX_VALUE))
        );
        rotValorLayout.setVerticalGroup(
            rotValorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(rotValorLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(lValorTotal)
                .addContainerGap(70, Short.MAX_VALUE))
        );

        jLabel2.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel2.setText("* Só é possivel compra de produtos cadastrados");

        rotParcela.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Parcelamento", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N

        lValorTotal1.setFont(new java.awt.Font("Tahoma", 1, 18));

        nParcelas.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5" }));
        nParcelas.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                nParcelasItemStateChanged(evt);
            }
        });

        jLabel13.setFont(new java.awt.Font("Tahoma", 0, 12));
        jLabel13.setText("Nº Parcelas");

        rotValorParcela.setEditable(false);
        rotValorParcela.setFont(new java.awt.Font("Tahoma", 1, 24));
        rotValorParcela.setEnabled(false);
        jScrollPane1.setViewportView(rotValorParcela);

        javax.swing.GroupLayout rotParcelaLayout = new javax.swing.GroupLayout(rotParcela);
        rotParcela.setLayout(rotParcelaLayout);
        rotParcelaLayout.setHorizontalGroup(
            rotParcelaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(rotParcelaLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(rotParcelaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel13)
                    .addComponent(nParcelas, javax.swing.GroupLayout.PREFERRED_SIZE, 73, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGroup(rotParcelaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(rotParcelaLayout.createSequentialGroup()
                        .addGap(64, 64, 64)
                        .addComponent(lValorTotal1))
                    .addGroup(rotParcelaLayout.createSequentialGroup()
                        .addGap(40, 40, 40)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 142, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(51, Short.MAX_VALUE))
        );
        rotParcelaLayout.setVerticalGroup(
            rotParcelaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(rotParcelaLayout.createSequentialGroup()
                .addGroup(rotParcelaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(rotParcelaLayout.createSequentialGroup()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(38, 38, 38)
                        .addComponent(lValorTotal1))
                    .addGroup(rotParcelaLayout.createSequentialGroup()
                        .addComponent(jLabel13)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(nParcelas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 383, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(rotValor, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(rotParcela, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jPanel3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jPanel5, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addContainerGap())
                    .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING)))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(rotParcela, 0, 114, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(rotValor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE)
                .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnNovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNovoActionPerformed


        txtPesquisaProduto.setText("");
        txtQtd.setText("");


        valorCompra = 0;

        btnSalvar.setEnabled(true);
        btnCancelar.setEnabled(true);
        btnNovo.setEnabled(false);


        txtPesquisaProduto.setEnabled(true);

        txtQtd.setEnabled(true);

        btnAddProduto.setEnabled(true);



        boxTipoPagamento.setEnabled(true);

        tabPesquisaProduto.setEnabled(true);
        tabProdutoSelecionados.setEnabled(true);

        modeloProdutoSelecionado.setNumRows(0);
        modeloPesquisaFornecedor.setNumRows(0);
        modeloPesquisaProduto.setNumRows(0);


}//GEN-LAST:event_btnNovoActionPerformed

    private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSalvarActionPerformed
        try {
            listaProduto = new ArrayList<Produto>();

            Calendar data = new GregorianCalendar();

            String dataHoje = data.get(data.DAY_OF_MONTH) + "/" + (data.get(data.MONTH)) + "/" + data.get(data.YEAR);

            data.add(Calendar.DAY_OF_MONTH, 30);

            String dataParcela = data.get(data.DAY_OF_MONTH) + "/" + (data.get(data.MONTH)+1) + "/" + data.get(data.YEAR);




            int contador = tabProdutoSelecionados.getRowCount();

            ProdutoDAO pdao = new ProdutoDAO();
            Produto p = new Produto();

            for (int i = 0; i < contador; i++) {

                p = pdao.retornaProdutoPorCodigo(Integer.parseInt(tabProdutoSelecionados.getValueAt(i, 0).toString()));
                p.setQuantidade(Integer.parseInt(tabProdutoSelecionados.getValueAt(i, 3).toString()));

                listaProduto.add(p);



            }

            dao = new CompraDAO();

            compra = new Compra();


            compra.setTotal(Double.parseDouble(lValorTotal.getText()));
            compra.setnParcelas(Integer.parseInt(nParcelas.getSelectedItem().toString()));
            compra.setValorParcela(Double.parseDouble(rotValorParcela.getText()));
            compra.setData(dataHoje);
            compra.setVencimentoParcela(dataParcela);

            if (boxTipoPagamento.getSelectedItem().toString().equals("Á vista")) {
                compra.setTipoPagamento("Á vista");
            } else if (boxTipoPagamento.getSelectedItem().toString().equals("Á vista no cartão")) {
                compra.setTipoPagamento("Á vista no cartão");
            } else if (boxTipoPagamento.getSelectedItem().toString().equals("Á prazo")) {
                compra.setTipoPagamento("Á prazo");
            } else {
                compra.setTipoPagamento("Á prazo no cartão");
            }
            dao.adiciona(compra, listaProduto);



            btnSalvar.setEnabled(false);
            btnNovo.setEnabled(true);
            btnCancelar.setEnabled(false);


            txtPesquisaProduto.setEnabled(false);
            btnAddProduto.setEnabled(false);


            tabPesquisaProduto.setEnabled(false);
            tabProdutoSelecionados.setEnabled(false);


            txtPesquisaProduto.setText("");
            txtQtd.setText("");
            rotValorParcela.setText("");
            lValorTotal.setText("");
            lValorTotal1.setText("");



            modeloProdutoSelecionado.setNumRows(0);
            modeloPesquisaFornecedor.setNumRows(0);
            modeloPesquisaProduto.setNumRows(0);

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Erro: " + ex.getMessage(), "Erro", 0);
        }

}//GEN-LAST:event_btnSalvarActionPerformed

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed


        txtPesquisaProduto.setEnabled(false);
        txtQtd.setEnabled(false);

        boxTipoPagamento.setEnabled(false);
        btnAddProduto.setEnabled(false);

        btnNovo.setEnabled(true);
        btnSalvar.setEnabled(false);
        btnCancelar.setEnabled(false);

        modeloProdutoSelecionado.setNumRows(0);
        modeloPesquisaFornecedor.setNumRows(0);
        modeloPesquisaProduto.setNumRows(0);

    }//GEN-LAST:event_btnCancelarActionPerformed

    private void boxTipoPagamentoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_boxTipoPagamentoActionPerformed
        // TODO add your handling code here:
}//GEN-LAST:event_boxTipoPagamentoActionPerformed

    private void tabProdutoSelecionadosMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tabProdutoSelecionadosMouseClicked
        // TODO add your handling code here:
    }//GEN-LAST:event_tabProdutoSelecionadosMouseClicked

    private void txtPesquisaProdutoKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtPesquisaProdutoKeyReleased

        txtQtd.setText("");
        modeloPesquisaProduto.setNumRows(0);

        ArrayList<Produto> listaP;

        try {
            ProdutoDAO pdao = new ProdutoDAO();
            if (!txtPesquisaProduto.getText().isEmpty()) {

                listaP = pdao.retornaProdutoPorNome(txtPesquisaProduto.getText().toUpperCase());

                for (Produto p : listaP) {
                    FornecedorDAO fdao = new FornecedorDAO();
                    Fornecedor f = fdao.retornaFornecedorPorCodigo(p.getCodFornecedor());
                    modeloPesquisaProduto.addRow(new String[]{Integer.toString(p.getCodProduto()), p.getNome(), f.getNomeEmpresa(), Double.toString(p.getPreco())});
                }
            }

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Erro: " + ex.getMessage(), "Erro", 0);
        }
    }//GEN-LAST:event_txtPesquisaProdutoKeyReleased

    private void tabPesquisaProdutoMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tabPesquisaProdutoMouseClicked
    }//GEN-LAST:event_tabPesquisaProdutoMouseClicked

    private void btnAddProdutoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddProdutoActionPerformed
        if (!txtQtd.getText().isEmpty()) {
            int linha = tabPesquisaProduto.getSelectedRow();
            try {
                ProdutoDAO pdao = new ProdutoDAO();
                Produto p = pdao.retornaProdutoPorCodigo(Integer.parseInt(tabPesquisaProduto.getValueAt(linha, 0).toString()));

                modeloProdutoSelecionado.addRow(new String[]{Integer.toString(p.getCodProduto()), p.getNome(), Double.toString(p.getPreco()), txtQtd.getText()});

                valorCompra += p.getPreco() * Double.parseDouble(txtQtd.getText());

                lValorTotal.setText(Double.toString(valorCompra));

                rotValorParcela.setText(Double.toString(valorCompra));

            } catch (Exception ex) {
                JOptionPane.showMessageDialog(null, "Erro: " + ex.getMessage(), "Erro", 0);
            }
        } else {
            JOptionPane.showMessageDialog(null, "Erro: Você não preencheu o campo QUANTIDADE.", "Erro", 0);
        }
}//GEN-LAST:event_btnAddProdutoActionPerformed

    private void txtQtdKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtQtdKeyReleased
        try {
            Integer.parseInt(txtQtd.getText());
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "No campo quatidade só é permitido números!", "Aviso", 0);
            txtQtd.setText("");
        }
    }//GEN-LAST:event_txtQtdKeyReleased

    private void nParcelasItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_nParcelasItemStateChanged
        rotValorParcela.setText(Double.toString(valorCompra / Integer.parseInt(nParcelas.getSelectedItem().toString())));
    }//GEN-LAST:event_nParcelasItemStateChanged

    private void formWindowOpened_PesquisaProduto(java.awt.event.WindowEvent evt) {

        //TABELA
        String[] colunas = new String[]{"", "", "", ""};
        String[][] dados = new String[][]{};

        modeloPesquisaProduto = new DefaultTableModel(dados, colunas);

        tabPesquisaProduto.setModel(modeloPesquisaProduto);
        tabPesquisaProduto.getTableHeader().getColumnModel().getColumn(0).setHeaderValue("Código");
        tabPesquisaProduto.getTableHeader().getColumnModel().getColumn(1).setHeaderValue("Nome");
        tabPesquisaProduto.getTableHeader().getColumnModel().getColumn(2).setHeaderValue("Fornecedor");
        tabPesquisaProduto.getTableHeader().getColumnModel().getColumn(3).setHeaderValue("Preço");

        tabPesquisaProduto.setPreferredScrollableViewportSize(new Dimension(2300, 0));

    }

    private void formWindowOpened_PesquisaFornecedor(java.awt.event.WindowEvent evt) {

        //TABELA
        String[] colunas = new String[]{"", "", "", ""};
        String[][] dados = new String[][]{};

        modeloPesquisaFornecedor = new DefaultTableModel(dados, colunas);


    }

    private void formWindowOpened_ProdutoSelecionado(java.awt.event.WindowEvent evt) {

        //TABELA
        String[] colunas = new String[]{"", "", "", ""};
        String[][] dados = new String[][]{};

        modeloProdutoSelecionado = new DefaultTableModel(dados, colunas);

        tabProdutoSelecionados.setModel(modeloProdutoSelecionado);
        tabProdutoSelecionados.getTableHeader().getColumnModel().getColumn(0).setHeaderValue("Código");
        tabProdutoSelecionados.getTableHeader().getColumnModel().getColumn(1).setHeaderValue("Nome");
        tabProdutoSelecionados.getTableHeader().getColumnModel().getColumn(2).setHeaderValue("Preco");
        tabProdutoSelecionados.getTableHeader().getColumnModel().getColumn(3).setHeaderValue("Quantidade");

        tabProdutoSelecionados.setPreferredScrollableViewportSize(new Dimension(2300, 0));

    }

    public void primeiraLeitura() {

        String data = new SimpleDateFormat("dd/MM/yyyy").format(new Date()).toString();
        txtData.setText(data);

        txtPesquisaProduto.setText("");
        txtQtd.setText("");
        lValorTotal.setText("");

        btnSalvar.setEnabled(false);
        btnNovo.setEnabled(true);
        btnCancelar.setEnabled(false);
        btnAddProduto.setEnabled(false);


        txtPesquisaProduto.setEnabled(false);
        txtQtd.setEnabled(false);
        btnAddProduto.setEnabled(false);


        boxTipoPagamento.setEnabled(false);

        tabPesquisaProduto.setEnabled(false);
        tabProdutoSelecionados.setEnabled(false);

        formWindowOpened_PesquisaProduto(null);
        formWindowOpened_PesquisaFornecedor(null);
        formWindowOpened_ProdutoSelecionado(null);


        txtPesquisaProdutoKeyReleased(null);


        setVisible(true);

        

    }

//    public String vencimentoParcela(int numeroDaParcela) {
//
//        boolean dataPronta = false;
//
//        int dia = Integer.parseInt(new SimpleDateFormat("dd").format(new Date()).toString());
//        int mes = Integer.parseInt(new SimpleDateFormat("MM").format(new Date()).toString());
//        int ano = Integer.parseInt(new SimpleDateFormat("yyyy").format(new Date()).toString());
//
//        while (dataPronta == false) {
//
//
//            int diaParcela = dia + numeroDaParcela * 30;
//
//            if (diaParcela > 30) {
//                diaParcela -= 30;
//                mes += 1;
//
//                if (mes > 12) {
//
//                    mes -= 12;
//
//                    ano += 1;
//
//                    if (mes <= 12 && diaParcela <= 30) {
//                        dataPronta = true;
//                    }
//
//                }
//            }
//        }
//
//        return dia + "/" + mes + "/" + ano;
//    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JComboBox boxTipoPagamento;
    private javax.swing.JButton btnAddProduto;
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnNovo;
    private javax.swing.JButton btnSalvar;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JLabel lValorTotal;
    private javax.swing.JLabel lValorTotal1;
    private javax.swing.JComboBox nParcelas;
    private javax.swing.JPanel rotParcela;
    private javax.swing.JPanel rotValor;
    private javax.swing.JTextPane rotValorParcela;
    private javax.swing.JTable tabPesquisaProduto;
    private javax.swing.JTable tabProdutoSelecionados;
    private javax.swing.JTextField txtData;
    private javax.swing.JTextField txtPesquisaProduto;
    private javax.swing.JTextField txtQtd;
    // End of variables declaration//GEN-END:variables
}
